• 検索結果がありません。

誤差の怖い話 | 浮動小数点数

N/A
N/A
Protected

Academic year: 2021

シェア "誤差の怖い話 | 浮動小数点数"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

. .

.. .

.

.

誤差の怖い話

浮動小数点数

樋口さぶろお

龍谷大学理工学部数理情報学科

数値計算法L02(2010-04-16)

今日の目標

.

.

.

1 浮動小数点数はどんな形でメモリに置 かれてるか

.

.

.

2 いろんな誤差

.

.

.

3 人間による有効数字を考慮した計算

http://hig3.net

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 1 / 16

(2)

誤差の怖い話浮動小数点数 指数表記と有効数字

指数表記または科学表記

物理実験

.

有効数字s+ 1桁の指数表記

.

.

.

.. .

.

.

±n0.n1n2n3n4· · ·ns×10e 符号 ±

仮数部 n0.n1n2n3n4· · ·ns (s+ 1個の数字) 指数部 e(整数)

1.2345×103. 仮数部の0桁目は 1n0 9 と限定

限定しないと

0.12345 × 104

とも書けちゃう

n0.n1n2n3n4· · ·ns = 1.2345のとき,真の値 x 1.23445x <1.23455 というつもり 桁分の数字を信じていい 有効数字 は

(3)

誤差の怖い話浮動小数点数 指数表記と有効数字

.

指数表記の利点

.

.

.

.. .

.

.

.

.

.

1 有効数字を明確にできる.

いい分銅 1.0000000×100 kg, 安物の分銅1.000×100kg

.

.

. 2 エコ

8桁電卓の表示領域のエコな使い方

黒板でやるね〜

同じ8桁でも指数表記なら広い範囲を記述できる.

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 3 / 16

(4)

誤差の怖い話浮動小数点数 指数表記と有効数字

指数表記で答えよう

!

.

例題

.

.

.

.. .

.

.

富士山の高さは何 m? 有効数字3桁で. 日本の人口は何人? 有効数字2桁で.

自分の身長は何cm? 自分の知ってるだけの有効数字で.

黒板でやるね〜

(5)

誤差の怖い話浮動小数点数 浮動小数点数

浮動小数点数って指数表記的なメモリ格納方法

¨

§

¥

栗原§1.2¦

double64bit,float32bitの 浮動小数点数 . 指数表記を使って代入することができる.

E =×10

代入 ³

double x=838.88; /*x= 8.3888×102*/

double y=-1.2345E-12; /*指数表記y=1.2345×1012*/

float z=3.879E+9; /*指数表記z= 3.879×109*/

µ ´

.

浮動(floating)小数点(point)って?

.

.

.

.. .

.

.

−0.0000000000123453879000000.0なのに,指数部を使って便利な場 所に小数点を動かしてるでしょ.

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 5 / 16

(6)

誤差の怖い話浮動小数点数 浮動小数点数

浮動小数点数のデータ構造

float(32bit)の場合

s e n

符号 s1bit s=±1. 0s= +1,1s=1.

指数部 e8bit 0e255.

仮数部 n23 bit 0n2231.

表す数: s×(1 + 224n)×2e127.

あれっなんかすごく複雑になってる…要するに.

黒板でやるね〜

(7)

誤差の怖い話浮動小数点数 いろんな誤差

やっぱり字幕

(2

)

より吹替

(10

)

が楽

ここからは

なんちゃって10進浮動小数点数myfloat のおとぎ話 または

指数表記による有効数字を考慮した手計算のたとえ話 で中継します.

すべての数は

±n0.n1n2n3n4n5×10±e1e2

適宜頭の中で翻訳してお楽しみください.

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 7 / 16

(8)

誤差の怖い話浮動小数点数 いろんな誤差

代入で大ピ〜ンチ

!

¨

§

¥

栗原§1.2¦

³

myfloat x=1.234567890E9;

µ ´

1.23457×109 が代入されて少しずれる.

丸め誤差

おとぎ話の欠点実際は10進でなく2進で記録される.

3.140000000000 のような, 10進であるところから先が0の数にも丸め誤

差がでる. Ã きょうのquiz

(9)

誤差の怖い話浮動小数点数 いろんな誤差

かけ算で大ピ〜ンチ

!

1.23456×1013×7.89012×1042= 9.740826547×1029 積の有効数字の桁数は5桁のまま変わらない.

消したところは,有効数字以下の影響を受けるので信じられない. だって,有効数字1桁のときを想像してみて.

2×102×3×105= 6.0×107 だけど,33.1 66.2 でしょ.

オーバーフロー

,

アンダーフロー

5.00000×1040.00000×1059= 1.5000×10100 として扱われる. 5.00000×1040.00000×1061= 1.5000×10100 0として扱われる. オーバーフロー,アンダーフローは加算減算でも起きる(もちろん).

手計算の場合,指数部の桁数には制限をつけないのでこの問題は起きない

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 9 / 16

(10)

誤差の怖い話浮動小数点数 いろんな誤差

足し算引き算で大ピ〜ンチ

!

¨

§

¥

栗原§1.2¦

1.23456×104+ 7.89012×100=??

12345. 6 +) 7. 89012

12353. 490121.23534×104. 有効数字は6桁のまま.

下の方の桁9012の情報が使われない.

情報落ち

(11)

誤差の怖い話浮動小数点数 いろんな誤差

足し算引き算でもっとひどい大ピ〜ンチ

!

1.23456×104+ 7.89012×103=??

12345. 6

+) 0. 00789012

12345. 607890121.23456×104.

2個目の数の情報がまったく消えてしまう. 数を足したのに変化しない. 危険なプログラム

³

int i;

myfloat x=1;

for(i=0;i<1.0E+7;i++){ x=x+1.0E-7;

}

µ ´

最後にx2になるか?

float, double樋口さぶろお (数理情報学科)の数を多くの回数加えるのは危険誤差の怖い話浮動小数点数 . 数値計算法L02(2010-04-16) 11 / 16

(12)

誤差の怖い話浮動小数点数 いろんな誤差

引き算の大ピ〜ンチ

!

¨

§

¥

栗原§1.2¦

1.23456×1051.23442×105 = 1.2×102 有効数字2桁に減っちゃう!

近い数同士の差を取ると有効数字が減って精度が落ちる.

桁落ち

(13)

誤差の怖い話浮動小数点数 いろんな誤差

演算順序で大ピ〜ンチ

!!

³

myfloat x=1.0+1E-10-1.0;/*=(1.0+1E-10)-1.0;*/

myfloat y=1e-10;

myfloat z=1.0E-51 * 1.0E-51 * 1.0E+51;

myfloat w=1.0E-51 * 1.0E+51 * 1.0E-51;

myfloat a=(1.00000E5+1.23456E0)*(1.00000E5+1.23456E0) -1.00000E5*1.00000E5; /*(c+d)(c+d)c2*/

myfloat b=2.0*1.23456E0+1.23456E0*1.23456E0; /*2cd+d2*/

µ ´

結果は同じか? ¤£栗原 例題14,15¡¢

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 13 / 16

(14)

誤差の怖い話浮動小数点数 いろんな誤差

(15)

誤差の怖い話浮動小数点数 いろんな誤差

.

例題

.

.

.

.. .

.

.

仮数部の有効数字3桁の myfloatを使って,次の計算結果を求めよう. 1.00E2+1.23E0

(1.00E2+1.23E0)*(1.00E2+1.23E0)-1.00E2*1.00E2

樋口さぶろお (数理情報学科) 誤差の怖い話浮動小数点数 数値計算法L02(2010-04-16) 15 / 16

(16)

誤差の怖い話浮動小数点数 いろんな誤差

今日出てきた誤差の種類 オーバーフロー アンダーフロー 丸め誤差 情報落ち 桁落ち 今後出てくる誤差

打ち切り誤差 離散化誤差

参照

関連したドキュメント

冒午後十一疇嘆死亡セリト禰シタ入月十七鐸曲馬ノ焼却

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

 是等實験誤差ノ根擦ハ主トシテ標本ノ厚薄ニアルベク,標本ノ薄キモノ程測定誤差ノ少キ

13) Romanoski, A.J., Folstein, M.F., Nestadt, D., et al.: The epidemiology of psychiatrist- ascertained depression and DSM-III depressive disorders: results from the Eastern

累積誤差の無い上限と 下限を設ける あいまいな変化点を除 外し、要求される平面 部分で管理を行う 出来形計測の評価範

地盤の破壊の進行性を無視することによる解析結果の誤差は、すべり面の総回転角度が大きいほ

した標準値を表示しておりますが、食材・調理状況より誤差が生じる場合が

運転時の異常な過渡変化及び設計基準事故時に必要な操作は,中央制御室にて実施可